Actors are commonly used to facilitate concurrent programming on many-core machines. After an actor has completed its tasks, the actor's associated resources should be collected for reuse. In many cases, actor-able languages and libraries rely on developers to finalize their actors explicitly. Typical automated garbage collection mechanisms in many programming languages can also be used to collect dead actors. In this case, the garbage collection may rely on synchronization mechanisms (e.g., barriers and locks) and cache coherence that do not allow for concurrent or dead actors collection.